package cn.ccccltd.waf.id_generator.config.db;

import java.io.Serializable;

import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
@ConditionalOnProperty(name = "spring.dbtype", havingValue = "db")
public class DBProperties implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6402928050925465373L;

	private String driverClassName;
	private String url;
	private String username;
	private String password;
	
	
	/**连接池的配置信息*/
	private int initialSize;
	private int minIdle;
	private int maxActive;
	private int maxWait;
	private int timeBetweenEvictionRunsMillis = 60000;
	private int minEvictableIdleTimeMillis = 300000;
	private String validationQuery = "SELECT 1 FROM DUAL";
	private boolean testWhileIdle = true;
	private boolean testOnBorrow = false;
	private boolean testOnReturn = false;
	private boolean poolPreparedStatements = true;
	private int maxPoolPreparedStatementPerConnectionSize = 20;
	private String filters = "stat,wall,log4j";
	private String connectionProperties = "druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000";

	/**
	 * @return 返回 driverClassName。
	 * 
	 */
	public String getDriverClassName() {
		return driverClassName;
	}

	/**
	 * @param driverClassName
	 *            要设置的 driverClassName。
	 * 
	 */
	public void setDriverClassName(String driverClassName) {
		this.driverClassName = driverClassName;
	}

	/**
	 * @return 返回 url。
	 * 
	 */
	public String getUrl() {
		return url;
	}

	/**
	 * @param url
	 *            要设置的 url。
	 * 
	 */
	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * @return 返回 username。
	 * 
	 */
	public String getUsername() {
		return username;
	}

	/**
	 * @param username
	 *            要设置的 username。
	 * 
	 */
	public void setUsername(String username) {
		this.username = username;
	}

	/**
	 * @return 返回 password。
	 * 
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * @param password
	 *            要设置的 password。
	 * 
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * @return 返回 initialSize。
	 * 
	 */
	public int getInitialSize() {
		return initialSize;
	}

	/**
	 * @param initialSize
	 *            要设置的 initialSize。
	 * 
	 */
	public void setInitialSize(int initialSize) {
		this.initialSize = initialSize;
	}

	/**
	 * @return 返回 minIdle。
	 * 
	 */
	public int getMinIdle() {
		return minIdle;
	}

	/**
	 * @param minIdle
	 *            要设置的 minIdle。
	 * 
	 */
	public void setMinIdle(int minIdle) {
		this.minIdle = minIdle;
	}

	/**
	 * @return 返回 maxActive。
	 * 
	 */
	public int getMaxActive() {
		return maxActive;
	}

	/**
	 * @param maxActive
	 *            要设置的 maxActive。
	 * 
	 */
	public void setMaxActive(int maxActive) {
		this.maxActive = maxActive;
	}

	/**
	 * @return 返回 maxWait。
	 * 
	 */
	public int getMaxWait() {
		return maxWait;
	}

	/**
	 * @param maxWait
	 *            要设置的 maxWait。
	 * 
	 */
	public void setMaxWait(int maxWait) {
		this.maxWait = maxWait;
	}

	/**
	 * @return 返回 timeBetweenEvictionRunsMillis。
	
	 */
	public int getTimeBetweenEvictionRunsMillis() {
		return timeBetweenEvictionRunsMillis;
	}

	/**
	 * @param timeBetweenEvictionRunsMillis 要设置的 timeBetweenEvictionRunsMillis。
	
	 */
	public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {
		this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
	}

	/**
	 * @return 返回 minEvictableIdleTimeMillis。
	
	 */
	public int getMinEvictableIdleTimeMillis() {
		return minEvictableIdleTimeMillis;
	}

	/**
	 * @param minEvictableIdleTimeMillis 要设置的 minEvictableIdleTimeMillis。
	
	 */
	public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {
		this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
	}

	/**
	 * @return 返回 validationQuery。
	
	 */
	public String getValidationQuery() {
		return validationQuery;
	}

	/**
	 * @param validationQuery 要设置的 validationQuery。
	
	 */
	public void setValidationQuery(String validationQuery) {
		this.validationQuery = validationQuery;
	}

	/**
	 * @return 返回 testWhileIdle。
	
	 */
	public boolean getTestWhileIdle() {
		return testWhileIdle;
	}

	/**
	 * @param testWhileIdle 要设置的 testWhileIdle。
	
	 */
	public void setTestWhileIdle(boolean testWhileIdle) {
		this.testWhileIdle = testWhileIdle;
	}

	/**
	 * @return 返回 testOnBorrow。
	
	 */
	public boolean getTestOnBorrow() {
		return testOnBorrow;
	}

	/**
	 * @param testOnBorrow 要设置的 testOnBorrow。
	
	 */
	public void setTestOnBorrow(boolean testOnBorrow) {
		this.testOnBorrow = testOnBorrow;
	}

	/**
	 * @return 返回 testOnReturn。
	
	 */
	public boolean getTestOnReturn() {
		return testOnReturn;
	}

	/**
	 * @param testOnReturn 要设置的 testOnReturn。
	
	 */
	public void setTestOnReturn(boolean testOnReturn) {
		this.testOnReturn = testOnReturn;
	}

	/**
	 * @return 返回 poolPreparedStatements。
	
	 */
	public boolean getPoolPreparedStatements() {
		return poolPreparedStatements;
	}

	/**
	 * @param poolPreparedStatements 要设置的 poolPreparedStatements。
	
	 */
	public void setPoolPreparedStatements(boolean poolPreparedStatements) {
		this.poolPreparedStatements = poolPreparedStatements;
	}

	/**
	 * @return 返回 maxPoolPreparedStatementPerConnectionSize。
	
	 */
	public int getMaxPoolPreparedStatementPerConnectionSize() {
		return maxPoolPreparedStatementPerConnectionSize;
	}

	/**
	 * @param maxPoolPreparedStatementPerConnectionSize 要设置的 maxPoolPreparedStatementPerConnectionSize。
	
	 */
	public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {
		this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;
	}

	/**
	 * @return 返回 filters。
	
	 */
	public String getFilters() {
		return filters;
	}

	/**
	 * @param filters 要设置的 filters。
	
	 */
	public void setFilters(String filters) {
		this.filters = filters;
	}

	/**
	 * @return 返回 connectionProperties。
	
	 */
	public String getConnectionProperties() {
		return connectionProperties;
	}

	/**
	 * @param connectionProperties 要设置的 connectionProperties。
	
	 */
	public void setConnectionProperties(String connectionProperties) {
		this.connectionProperties = connectionProperties;
	}

}
